// proxy vs Object.defineProperty()
// object.definedProperty 只能监视到属性的读写
//proxy 能监听到很多对象的操作
// 比如对象属性的删除
const person = {
    name : 'tom',
    age: 12
}
const peronProxy = new Proxy(person, {
    deleteProperty(target, property) {
        console.log('delete:', property)
        delete target[property] 
    }
})
delete peronProxy.age
console.log(person)


//object.definedProperty 是重写数组方法 像push等
//而proxy是拦截对数组的操作，对数组的监视 
const arr = []
const arrProxy = new Proxy(arr, {
    set(target, property, value) {
        console.log('set', property, value) 
        target[property] = value
        return true
    }
})
arrProxy.push(100)
arrProxy.push(200)
// 会自动定位数组的下标

//proxy是以非侵入的方式监管了对对象的读写

